package com.whc.goods.service;



import com.whc.api.dto.GoodsCreateDto;
import com.whc.api.dto.OrderDto;
import com.whc.goods.domain.dto.GoodsUpdateDto;
import com.whc.goods.domain.entity.Goods;
import com.whc.goods.domain.vo.GoodsVo;

import java.util.List;


public interface GoodsService {
    //查询某个商品是否在购物车
    Goods selectGoodsInCart(Long userId,Long goodsId);

    //添加商品到购物车
    void addGoodsToCart(Long userId,Long goodsId);

    //从购物车移除多个商品
    Long deleteMany(Long userId,List<Long> goodsIds);

    //清空购物车
    Long deleteAll(Long userId);

    //查询购物车列表
    List<GoodsVo> selectCartList(Long userId);

    //查询卖出的商品
    List<GoodsVo> selectSoldGoods(long userId);
    //查询买入的商品
    List<GoodsVo> selectBoughtGoods(long userId);
    //查询降价的商品
    List<GoodsVo> getCheaperGoods(long userId);
    //查询有效的商品
    List<GoodsVo> getWorksGoods(long userId);
    //查询无效的商品
    List<GoodsVo> getUnworksGoods(long userId);

    //根据类型名查询商品
    List<GoodsVo> SelectGoodsByType(String CategoryName);
    //根据id查询
    GoodsVo selectById(long id);
    //根据多个id查询
    List<GoodsCreateDto> selectByIds(List<Long> ids);
    //根据多个id扣减库存
    void deductGoodsByIds(OrderDto orderDto);
    //根据名称查询
    List<GoodsVo> selectByName(String name);
    //修改商品
    void updateGoods(GoodsUpdateDto goodsUpdateDto);
    //添加商品
    long insertGoods(GoodsCreateDto goodsCreateDto);
    //删除商品
    void deleteGoods(Long gid);

    List<GoodsVo> selectAll();
    //上传多个商品图片
    void addGoodsPhotos(List<String>urls,long goodId);
    //根据商品id查询商品所有图片
    List<String> findPhotosById(long goodId);

    List<GoodsVo> getAllExcept(long id);

    List<GoodsVo> getGoodsByUserId(Long id);

    void addGoodsWanters(long goodId);

    boolean buyGoods(OrderDto orderDto);

    List<GoodsVo> SelectGoodsByTypeExcept(String categoryName, Long id);

    void resetGoodsByIds(OrderDto orderDto);
}
